package com.applicasa.VirtualCurrency;
import java.util.ArrayList;
import java.util.List;
import java.util.GregorianCalendar;
import applicasa.LiCore.communication.LiUtility;
import applicasa.LiCore.communication.LiCallback.LiCallbackAction;
import com.applicasa.ApplicasaManager.LiCallbackQuery.LiVirtualCurrencyGetByIDCallback;
import com.applicasa.ApplicasaManager.LiCallbackQuery.LiVirtualCurrencyGetArrayCallback;
import com.applicasa.ApplicasaManager.LiManager.LiObject;
import android.database.Cursor;
import applicasa.LiCore.sqlDB.database.LiDbObject;
import applicasa.LiCore.communication.LiRequestConst.QueryKind;
import applicasa.LiCore.communication.LiUtility;
import applicasa.LiCore.LiErrorHandler;
import applicasa.LiCore.LiErrorHandler.ApplicasaResponse;
import applicasa.LiCore.communication.LiRequestConst.RequestAction;
import applicasa.LiCore.communication.LiObjRequest;
import applicasa.LiCore.communication.LiRequestConst.RequestCallback;
import applicasa.LiCore.communication.LiRequestConst.LiObjResponse;
import applicasa.LiCore.communication.LiFilters;
import applicasa.LiCore.communication.LiQuery;
import applicasa.LiCore.communication.LiFilters.Operation;
import applicasa.LiCore.sqlDB.database.LiCoreDBmanager;
import applicasa.LiJson.LiJSONException;
import applicasa.LiJson.LiJSONObject;
import applicasa.kit.IAP.IAP;
import applicasa.kit.IAP.IAP.LiCurrency;
import applicasa.kit.IAP.Callbacks.LiCallbackIAPPurchase;
import applicasa.kit.IAP.Callbacks.LiCallbackVirtualCurrencyRequest;
import android.app.Activity;
public class VirtualCurrency extends VirtualCurrencyData {
/** End of Basic SDK **/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// ///////////////////////////////////////
////////////////////////////////// In App Method ///////////////////////////////////////
////////////////////////////////// ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Purchase from Google Store the Virtual Currency
* @return
*/
public boolean buyVirtualCurrency(Activity activity, LiCallbackIAPPurchase liCallbackIAPPurchase)
{
return IAP.buyVirtualCurrency(activity, this, liCallbackIAPPurchase);
}
/**
* Give Coins
* @param coins
* @return
*/
public static boolean giveVirtualCurrency(int coins, LiCurrency licurrency, LiCallbackVirtualCurrencyRequest liCallbackVirtualCurrencyRequest )
{
return IAP.giveVirtualCurrency(coins, licurrency, liCallbackVirtualCurrencyRequest);
}
/**
* Use the Virtual Currency (e.g. decrease User's credit balance)
* @return
*/
public static boolean useVirtualCurrency(int coins, LiCurrency licurrency, LiCallbackVirtualCurrencyRequest liCallbackVirtualCurrencyRequest)
{
return IAP.useVirtualCurrency(coins,licurrency,liCallbackVirtualCurrencyRequest);
}
/**
* Get all Virtual Currency
* @return list of virtual Currency
*/
public static List<VirtualCurrency> getAllVirtualCurrency()
{
return IAP.getAllVirtualCurrency();
}
/**
* Get all Virtual Currency by currency kind
* @return list of virtual Currency
*/
public static List<VirtualCurrency> getAllVirtualCurrencyByKind(LiCurrency lilicurrency)
{
return IAP.getAllVirtualCurrencyByKind(lilicurrency);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////// ////////////////////////////////////////
/////////////////////////////////// Init Method ////////////////////////////////////////
/////////////////////////////////// Don't ALTER ////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public VirtualCurrency()
{
this.VirtualCurrencyID = "0";
this.VirtualCurrencyTitle = "";
this.VirtualCurrencyAppleIdentifier = "";
this.VirtualCurrencyGoogleIdentifier = "";
this.VirtualCurrencyDescription = "";
this.VirtualCurrencyPrice = 0f;
this.VirtualCurrencyIOSBundleMin = 0f;
this.VirtualCurrencyIOSBundleMax = 0f;
this.VirtualCurrencyAndroidBundleMin = 0f;
this.VirtualCurrencyAndroidBundleMax = 0f;
this.VirtualCurrencyPos = 1;
this.VirtualCurrencyCredit = 0;
this.VirtualCurrencyKind = null;
this.VirtualCurrencyImageA = "";
this.VirtualCurrencyImageB = "";
this.VirtualCurrencyImageC = "";
this.VirtualCurrencyIsDeal = false;
this.VirtualCurrencyInAppleStore = false;
this.VirtualCurrencyInGoogleStore = false;
(this.VirtualCurrencyLastUpdate = new GregorianCalendar()).setTimeInMillis(0);
}
public VirtualCurrency(Cursor cursor)
{
initWithCursor(cursor);
}
public VirtualCurrency(Cursor cursor,String header,int level)
{
initWithCursor(cursor,header,level);
}
public VirtualCurrency(String VirtualCurrencyID)
{
this.VirtualCurrencyID = VirtualCurrencyID;
}
public VirtualCurrency(VirtualCurrency item)
{
initWithObject(item);
}
/**
* Init Object with Cursor
* @param corsor
* @return
*/
public VirtualCurrency initWithCursor(Cursor cursor)
{
return initWithCursor(cursor,"",0);
}
/**
* Init Object with Cursor
* @param corsor
* @return
*/
public VirtualCurrency initWithCursor(Cursor cursor,String header,int level)
{
int columnIndex;
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyID.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyID = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyTitle.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyTitle = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyAppleIdentifier.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyAppleIdentifier = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyGoogleIdentifier.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyGoogleIdentifier = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyDescription.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyDescription = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualCurrency.VirtualCurrencyPrice.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyPrice = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualCurrency.VirtualCurrencyIOSBundleMin.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyIOSBundleMin = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualCurrency.VirtualCurrencyIOSBundleMax.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyIOSBundleMax = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualCurrency.VirtualCurrencyAndroidBundleMin.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyAndroidBundleMin = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header +LiFieldVirtualCurrency.VirtualCurrencyAndroidBundleMax.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyAndroidBundleMax = cursor.getFloat(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyPos.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyPos = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyCredit.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyCredit = cursor.getInt(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyKind.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyKind = LiCurrency.values()[cursor.getInt(columnIndex)];
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyImageA.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyImageA = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyImageB.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyImageB = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyImageC.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
this.VirtualCurrencyImageC = cursor.getString(columnIndex);
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyIsDeal.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualCurrencyIsDeal = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyInAppleStore.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualCurrencyInAppleStore = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyInGoogleStore.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
this.VirtualCurrencyInGoogleStore = cursor.getInt(columnIndex)==1?true:false;
}
columnIndex = cursor.getColumnIndex(header + LiFieldVirtualCurrency.VirtualCurrencyLastUpdate.toString());
if (columnIndex != LiCoreDBmanager.COLUMN_NOT_EXIST)
{
long dateStr = cursor.getLong(columnIndex);
GregorianCalendar gc= new GregorianCalendar();
gc.setTimeInMillis(dateStr);
this.VirtualCurrencyLastUpdate = gc;
}
return this;
}
/**
* Initialize values with Object
* @param item
* @return
*/
public String initWithObject(VirtualCurrency item)
{
this.VirtualCurrencyID = item.VirtualCurrencyID;
this.VirtualCurrencyTitle = item.VirtualCurrencyTitle;
this.VirtualCurrencyAppleIdentifier = item.VirtualCurrencyAppleIdentifier;
this.VirtualCurrencyGoogleIdentifier = item.VirtualCurrencyGoogleIdentifier;
this.VirtualCurrencyDescription = item.VirtualCurrencyDescription;
this.VirtualCurrencyPrice = item.VirtualCurrencyPrice;
this.VirtualCurrencyIOSBundleMin = item.VirtualCurrencyIOSBundleMin;
this.VirtualCurrencyIOSBundleMax = item.VirtualCurrencyIOSBundleMax;
this.VirtualCurrencyAndroidBundleMin = item.VirtualCurrencyAndroidBundleMin;
this.VirtualCurrencyAndroidBundleMax = item.VirtualCurrencyAndroidBundleMax;
this.VirtualCurrencyPos = item.VirtualCurrencyPos;
this.VirtualCurrencyCredit = item.VirtualCurrencyCredit;
this.VirtualCurrencyKind = item.VirtualCurrencyKind;
this.VirtualCurrencyImageA = item.VirtualCurrencyImageA;
this.VirtualCurrencyImageB = item.VirtualCurrencyImageB;
this.VirtualCurrencyImageC = item.VirtualCurrencyImageC;
this.VirtualCurrencyIsDeal = item.VirtualCurrencyIsDeal;
this.VirtualCurrencyInAppleStore = item.VirtualCurrencyInAppleStore;
this.VirtualCurrencyInGoogleStore = item.VirtualCurrencyInGoogleStore;
this.VirtualCurrencyLastUpdate = item.VirtualCurrencyLastUpdate;
return VirtualCurrencyID;
}
/**
* Function to add the given object fields to the request parameters list
* @param item
* @param request
* @return
*/
/**
* Initialize Dictionary with VirtualCurrency item instance
* @param dictionary
* @return
*/
public LiJSONObject dictionaryRepresentation(boolean withFK) throws LiErrorHandler {
try{
LiJSONObject dictionary = new LiJSONObject();
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyID, VirtualCurrencyID);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyTitle, VirtualCurrencyTitle);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyAppleIdentifier, VirtualCurrencyAppleIdentifier);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyGoogleIdentifier, VirtualCurrencyGoogleIdentifier);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyDescription, VirtualCurrencyDescription);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyPrice, VirtualCurrencyPrice);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyIOSBundleMin, VirtualCurrencyIOSBundleMin);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyIOSBundleMax, VirtualCurrencyIOSBundleMax);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyAndroidBundleMin, VirtualCurrencyAndroidBundleMin);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyAndroidBundleMax, VirtualCurrencyAndroidBundleMax);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyPos, VirtualCurrencyPos);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyCredit, VirtualCurrencyCredit);
if (VirtualCurrencyKind != null)
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyKind, VirtualCurrencyKind.ordinal());
else
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyKind, 1);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyImageA, VirtualCurrencyImageA);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyImageB, VirtualCurrencyImageB);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyImageC, VirtualCurrencyImageC);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyIsDeal, VirtualCurrencyIsDeal);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyInAppleStore, VirtualCurrencyInAppleStore);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyInGoogleStore, VirtualCurrencyInGoogleStore);
dictionary.put(LiFieldVirtualCurrency.VirtualCurrencyLastUpdate, LiUtility.convertDateToDictionaryRepresenataion(VirtualCurrencyLastUpdate));
return dictionary;
}
catch (LiJSONException ex)
{
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR, ex.getMessage());
}
}
public static LiDbObject createDB() throws LiJSONException{
LiDbObject dbObject = new LiDbObject();
dbObject.put("LiClassName", kClassName);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyID, LiCoreDBmanager.PRIMARY_KEY,-1);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyTitle, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyAppleIdentifier, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyGoogleIdentifier, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyDescription, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyPrice, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyIOSBundleMin, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyIOSBundleMax, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyAndroidBundleMin, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyAndroidBundleMax, LiCoreDBmanager.REAL,0f);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyPos, LiCoreDBmanager.INTEGER,1);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyCredit, LiCoreDBmanager.INTEGER,0);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyKind, LiCoreDBmanager.INTEGER,1);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyImageA, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyImageB, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyImageC, LiCoreDBmanager.TEXT,"");
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyIsDeal, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyInAppleStore, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyInGoogleStore, LiCoreDBmanager.BOOL,false);
dbObject.put(LiFieldVirtualCurrency.VirtualCurrencyLastUpdate, LiCoreDBmanager.DATE,0);
return dbObject;
}
public void increment(LiFieldVirtualCurrency liFieldVirtualCurrency) throws LiErrorHandler
{
increment(liFieldVirtualCurrency, 1);
}
public void increment(LiFieldVirtualCurrency liFieldVirtualCurrency, Object value) throws LiErrorHandler
{
String key = liFieldVirtualCurrency.toString();
float oldValueFloat = 0;
int oldValueInt = 0;
Object incrementedField = getVirtualCurrencyFieldbySortType(liFieldVirtualCurrency);
try {
if (incrementedField instanceof Integer)
{
int incInt;
if (value instanceof Integer)
incInt = (Integer)value;
else
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR, "Incremented Value isn't of the same type as the requested field");
int total = (Integer)incrementedField+incInt;
setVirtualCurrencyFieldbySortType(liFieldVirtualCurrency, total);
if (incrementedFields.has(liFieldVirtualCurrency.toString()))
oldValueInt = (Integer)incrementedFields.remove(key);
incrementedFields.put(key, (oldValueInt+incInt));
}
else if (incrementedField instanceof Float)
{
float incFloat;
if (value instanceof Float)
incFloat = (Float)value;
else
incFloat = Float.valueOf((Integer)value);
float total = (Float)incrementedField+incFloat;
setVirtualCurrencyFieldbySortType(liFieldVirtualCurrency, total);
if (incrementedFields.has(liFieldVirtualCurrency.toString()))
oldValueFloat = (Float)incrementedFields.remove(key);
incrementedFields.put(key, (oldValueFloat+incFloat));
}
else
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR,"Can't increase, Specified field is not Int or Float");
} catch (LiJSONException e) {
// TODO Auto-generated catch block
throw new LiErrorHandler(ApplicasaResponse.INPUT_VALUES_ERROR,"Can't increase, Recheck inserted Values");
}
}
private void resetIncrementedFields() {
// TODO Auto-generated method stub
incrementedFields = new LiJSONObject();
}
}